GDBObject.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 04 Sep 2023 14:00:57 +0100
changeset 314 4a2ef5a087f0
parent 278 e2a1930caa89
permissions -rw-r--r--
Add MI parser test This commit add test to parse real-world frament which failed to Pharo properly at some point. It is encoded here as bytearray to make sure all the characters are preserved exactly as they were.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     2
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
     3
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     4
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     5
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     7
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     8
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    10
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    11
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    12
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    13
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    14
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    15
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    16
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    22
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    23
"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ Package: 'jv:libgdbs' }"
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    26
"{ NameSpace: Smalltalk }"
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    27
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
Object subclass:#GDBObject
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	instanceVariableNames:'properties'
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	classVariableNames:''
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	poolDictionaries:''
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    32
	category:'GDB'
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    35
!GDBObject class methodsFor:'documentation'!
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
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    38
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    39
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
    40
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    41
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    42
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    43
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    44
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    45
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    46
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    47
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    48
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    49
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    50
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    51
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    52
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    53
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    54
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    55
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    56
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    57
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    58
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 91
diff changeset
    59
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    60
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    61
! !
65
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
    62
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    63
!GDBObject class methodsFor:'accessing-magritte'!
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    64
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    65
descriptionContainer
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    66
    ^ GDBMAContainer forClass: self.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    67
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    68
    "Created: / 23-09-2014 / 23:26:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    69
! !
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    70
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    71
!GDBObject class methodsFor:'utilities - properties'!
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    72
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    73
getPropertiesOf: object
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    74
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    75
    | names index properties |
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    76
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    77
    names := object class allInstVarNames.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    78
    index := names indexOf: #properties.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    79
    index ~~ 0 ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    80
        properties := object instVarAt: index.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    81
        properties isNil ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    82
            properties := Dictionary new.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    83
            object instVarAt: index put: properties.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    84
            ^ properties
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    85
        ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    86
    ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    87
    ^ nil
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    88
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    89
    "Created: / 20-06-2014 / 09:03:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    90
!
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    91
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    92
getProperty: nm of: object
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    93
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    94
    | nmXlated names index properties |
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    95
278
e2a1930caa89 Compatibility: do not use `#copyReplaceAll:with:`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
    96
    nmXlated := (nm includes: $-) ifTrue:[ (String withAll: nm) replaceAll: $- with: $_] ifFalse:[ nm ].
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
    97
    index := (names := object class allInstVarNames) indexOf: nmXlated.
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    98
    index ~~ 0 ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    99
        ^ object instVarAt: index.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   100
    ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   101
    index := names indexOf: #properties.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   102
    index ~~ 0 ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   103
        properties := object instVarAt: index.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   104
        properties notNil ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   105
            ^ properties at: nm ifAbsent:[ nil ]
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   106
        ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   107
    ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   108
    ^ nil
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   109
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   110
    "Created: / 20-06-2014 / 08:59:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   111
    "Modified: / 06-09-2014 / 02:05:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   112
!
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   113
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   114
setProperty: nm of: object to: value
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   115
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   116
    | nmXlated names index properties setter |
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   117
278
e2a1930caa89 Compatibility: do not use `#copyReplaceAll:with:`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   118
    nmXlated := (nm includes: $-) ifTrue:[ (String withAll: nm) replaceAll: $- with: $_] ifFalse:[ nm ].
65
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   119
    setter := ('_', nmXlated , ':') asSymbolIfInterned.
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   120
    setter notNil and:[ 
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   121
        (object respondsTo: setter) ifTrue:[ 
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   122
            object perform: setter with: value.
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   123
            ^ self
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   124
        ].
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   125
    ].
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   126
    setter := (nmXlated , ':') asSymbolIfInterned.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   127
    setter notNil and:[ 
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   128
        (object respondsTo: setter) ifTrue:[ 
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   129
            object perform: setter with: value.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   130
            ^ self
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   131
        ].
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   132
    ].
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   133
    index := (names := object class allInstVarNames) indexOf: nmXlated.
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   134
    index ~~ 0 ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   135
        object instVarAt: index put: value.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   136
    ] ifFalse:[
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   137
        index := names indexOf: #properties.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   138
        index ~~ 0 ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   139
            properties := object instVarAt: index.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   140
            properties isNil ifTrue:[ 
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   141
                properties := Dictionary new.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   142
                object instVarAt: index put: properties.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   143
            ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   144
            properties at: nm put: value.
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   145
        ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   146
    ].
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   147
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   148
    "Created: / 20-06-2014 / 09:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   149
    "Modified: / 08-03-2015 / 08:34:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   150
! !
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   151
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
!GDBObject methodsFor:'accessing-properties'!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   154
properties
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   155
    ^ self class getPropertiesOf: self.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   156
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   157
    "Modified: / 06-09-2014 / 01:49:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   158
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   159
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
propertyAt: name
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   161
    ^ self class getProperty: name of: self
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    "Created: / 31-05-2014 / 00:00:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   164
    "Modified: / 06-09-2014 / 01:49:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
!
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
propertyAt: name put: value
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   168
    ^ self class setProperty: name of: self to: value
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
    "Created: / 31-05-2014 / 00:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   171
    "Modified: / 06-09-2014 / 01:49:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   174
!GDBObject methodsFor:'attributes access'!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   175
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   176
objectAttributes
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   177
    ^ properties
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   178
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   179
    "Created: / 18-06-2014 / 07:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   180
!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   181
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   182
objectAttributes: aDictionary
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   183
    properties := aDictionary
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   184
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   185
    "Created: / 18-06-2014 / 07:57:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   186
! !
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   187
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   188
!GDBObject methodsFor:'inspecting'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   189
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   190
inspectorExtraAttributes
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   191
    | attrs |
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   192
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   193
    attrs := super inspectorExtraAttributes.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   194
    properties notEmptyOrNil ifTrue:[ 
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   195
        properties keysAndValuesDo:[ :name :value |
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   196
            attrs at: '-' , name put: value.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   197
        ]
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   198
    ].
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   199
    ^ attrs
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   200
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   201
    "Created: / 13-06-2017 / 16:13:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   202
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   203
65
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   204
!GDBObject class methodsFor:'documentation'!
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   205
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   206
version_HG
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   207
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   208
    ^ '$Changeset: <not expanded> $'
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   209
! !
243ca7ca389f Changed setProperty:of:to: to try underscore setter first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   210