Make GDBEvent and GDBCommandResult also described by value descriptor...
...so their return values are typed and this parsed as objects.
--- a/GDBAsyncEvent.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBAsyncEvent.st Thu Jun 19 22:16:26 2014 +0100
@@ -1,7 +1,7 @@
"{ Package: 'jv:libgdbs' }"
GDBEvent subclass:#GDBAsyncEvent
- instanceVariableNames:'type data'
+ instanceVariableNames:'type'
classVariableNames:'EventTypeToEventClassMap'
poolDictionaries:''
category:'GDB-Core-Events'
@@ -85,14 +85,6 @@
!GDBAsyncEvent methodsFor:'accessing'!
-data
- ^ data
-!
-
-data:anArray
- data := anArray.
-!
-
type
^ type
!
--- a/GDBCommandResult.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBCommandResult.st Thu Jun 19 22:16:26 2014 +0100
@@ -1,7 +1,7 @@
"{ Package: 'jv:libgdbs' }"
-Object subclass:#GDBCommandResult
- instanceVariableNames:'status value'
+GDBObject subclass:#GDBCommandResult
+ instanceVariableNames:'command status'
classVariableNames:''
poolDictionaries:''
category:'GDB-Core-Commands'
@@ -10,20 +10,20 @@
!GDBCommandResult methodsFor:'accessing'!
+command
+ ^ command
+!
+
+command:something
+ command := something.
+!
+
status
^ status
!
status:something
status := something.
-!
-
-value
- ^ value
-!
-
-value:something
- value := something.
! !
!GDBCommandResult class methodsFor:'documentation'!
--- a/GDBDriver.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBDriver.st Thu Jun 19 22:16:26 2014 +0100
@@ -3,7 +3,7 @@
Object subclass:#GDBDriver
instanceVariableNames:'pid debuggerInput debuggerOutput inferiorPTY eventAnnouncer
eventQueue eventQueueLock eventQueueNotifier eventDispatchProcess
- eventPumpProcess'
+ eventPumpProcess outstandingCommands'
classVariableNames:''
poolDictionaries:'GDBDebugFlags'
category:'GDB-Private'
@@ -122,9 +122,11 @@
command token notNil ifTrue:[
debuggerInput nextPutAll: command token printString.
].
+ outstandingCommands add: command.
debuggerInput nextPutLine: command asString.
"Created: / 02-06-2014 / 23:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 22:08:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBDriver methodsFor:'event pump'!
@@ -133,6 +135,13 @@
| parser |
parser := GDBParser on: debuggerOutput.
+ parser token2CommandMappingBlock:[ :token |
+ | command |
+
+ command := outstandingCommands detect:[:cmd | cmd token == token ] ifNone:[nil].
+ command notNil ifTrue:[ outstandingCommands remove: command ].
+ command
+ ].
[ debuggerOutput atEnd ] whileFalse:[
| eventset |
@@ -165,7 +174,7 @@
]
"Created: / 02-06-2014 / 22:38:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 03-06-2014 / 00:54:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 22:10:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
eventPumpStart
@@ -236,12 +245,14 @@
eventQueueLock := RecursionLock new.
eventQueueNotifier := Semaphore new.
eventAnnouncer := Announcer new.
+ outstandingCommands := Set new.
eventAnnouncer
when:GDBCommandEvent
send:#onCommand:
to:self.
"Created: / 09-06-2014 / 18:21:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 22:08:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
release
--- a/GDBMICommand.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBMICommand.st Thu Jun 19 22:16:26 2014 +0100
@@ -225,6 +225,14 @@
"Modified: / 12-06-2014 / 00:43:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!GDBMICommand methodsFor:'accessing-descriptors'!
+
+resultValueDescriptor
+ ^ GDBObjectValueDescriptor new
+
+ "Created: / 19-06-2014 / 21:39:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GDBMICommand methodsFor:'converting'!
asString
--- a/GDBMI_exec_continue.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBMI_exec_continue.st Thu Jun 19 22:16:26 2014 +0100
@@ -64,3 +64,10 @@
^ 'exec-continue'
! !
+!GDBMI_exec_continue class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/GDBObjectValueDescriptor.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBObjectValueDescriptor.st Thu Jun 19 22:16:26 2014 +0100
@@ -10,9 +10,11 @@
!GDBObjectValueDescriptor methodsFor:'accessing'!
propertyDescriptorAt: name
+ properties isNil ifTrue:[ ^ nil ].
^ properties at: name ifAbsent:[nil].
"Created: / 18-06-2014 / 20:34:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 21:19:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBObjectValueDescriptor methodsFor:'defining'!
--- a/GDBParser.st Thu Jun 19 10:10:52 2014 +0100
+++ b/GDBParser.st Thu Jun 19 22:16:26 2014 +0100
@@ -3,7 +3,7 @@
"{ Package: 'jv:libgdbs' }"
Object subclass:#GDBParser
- instanceVariableNames:'source lookahead token'
+ instanceVariableNames:'source lookahead token token2CommandMappingBlock'
classVariableNames:''
poolDictionaries:'GDBCommandStatus'
category:'GDB-Private'
@@ -17,6 +17,14 @@
"Created: / 27-05-2014 / 23:50:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!GDBParser methodsFor:'accessing'!
+
+token2CommandMappingBlock: aBlock
+ token2CommandMappingBlock := aBlock.
+
+ "Created: / 19-06-2014 / 21:34:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GDBParser methodsFor:'initialization'!
on: aStringOrStream
@@ -256,20 +264,36 @@
result-record → '^' result-class ( ',' result )* nl
"
- | result |
+ | command result descriptor propertyName propertyDescriptor propertyValue |
self expect: $^.
result := GDBCommandResult new.
result status: self parseResultClass.
- self peek == $, ifTrue:[
- self next.
- result value: self parseResult.
+ descriptor := GDBObjectValueDescriptor new.
+ (token notNil and:[ token2CommandMappingBlock notNil ]) ifTrue:[
+ command := token2CommandMappingBlock value: token.
+ command notNil ifTrue:[
+ result command: command.
+ descriptor := command resultValueDescriptor.
+ ].
].
+ [ self peek == $, ] whileTrue:[
+ self next. "/ eat $,
+ propertyName := self parseVariable.
+ propertyDescriptor := descriptor propertyDescriptorAt: propertyName.
+ self expect: $=.
+ propertyDescriptor isNil ifTrue:[
+ propertyValue := self parseValue.
+ ] ifFalse:[
+ propertyValue := propertyDescriptor parseUsingParser: self.
+ ].
+ result propertyAt: propertyName put: propertyValue.
+ ].
self parseNl.
^ GDBCommandResultEvent new result: result.
"Created: / 30-05-2014 / 09:52:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 02-06-2014 / 22:22:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 22:03:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
parseToken
@@ -312,26 +336,31 @@
async-output → async-class ( ',' result )* nl
"
- | type eventClass data |
+ | type eventClass event propertyName propertyDescriptor descriptor propertyValue |
type := self parseString.
eventClass := eventClassBase eventClassForType: type.
-
- data := Array streamContents:[ :s |
- [ self peek == $, ] whileTrue:[
- self next.
- s nextPut: self parseResult.
- ]
+ event := eventClass new.
+ event type: type.
+ descriptor := eventClass gdbValueDescriptor.
+ [ self peek == $, ] whileTrue:[
+ self next. "/ eat $,
+ propertyName := self parseVariable.
+ propertyDescriptor := descriptor propertyDescriptorAt: propertyName.
+ self expect: $=.
+ propertyDescriptor isNil ifTrue:[
+ propertyValue := self parseValue.
+ ] ifFalse:[
+ propertyValue := propertyDescriptor parseUsingParser: self.
+ ].
+ event propertyAt: propertyName put: propertyValue.
].
self parseNl.
- ^ eventClass new
- type: type;
- data: data;
- yourself
+ ^ event
"Created: / 01-06-2014 / 23:43:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-06-2014 / 17:07:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 21:43:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBParser methodsFor:'parsing-misc'!
--- a/Make.proto Thu Jun 19 10:10:52 2014 +0100
+++ b/Make.proto Thu Jun 19 22:16:26 2014 +0100
@@ -123,7 +123,6 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
$(OUTDIR)GDBCommand.$(O) GDBCommand.$(H): GDBCommand.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)GDBCommandResult.$(O) GDBCommandResult.$(H): GDBCommandResult.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandStatus.$(O) GDBCommandStatus.$(H): GDBCommandStatus.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
$(OUTDIR)GDBDebugFlags.$(O) GDBDebugFlags.$(H): GDBDebugFlags.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
$(OUTDIR)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -139,6 +138,7 @@
$(OUTDIR)GDBAsyncEvent.$(O) GDBAsyncEvent.$(H): GDBAsyncEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBCLICommand.$(O) GDBCLICommand.$(H): GDBCLICommand.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommand.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandEvent.$(O) GDBCommandEvent.$(H): GDBCommandEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)GDBCommandResult.$(O) GDBCommandResult.$(H): GDBCommandResult.st $(INCLUDE_TOP)/jv/libgdbs/GDBObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandResultEvent.$(O) GDBCommandResultEvent.$(H): GDBCommandResultEvent.st $(INCLUDE_TOP)/jv/libgdbs/GDBEvent.$(H) $(INCLUDE_TOP)/stx/goodies/announcements/Announcement.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBCompoundValueDescriptor.$(O) GDBCompoundValueDescriptor.$(H): GDBCompoundValueDescriptor.st $(INCLUDE_TOP)/jv/libgdbs/GDBValueDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)GDBDriver.$(O) GDBDriver.$(H): GDBDriver.st $(INCLUDE_TOP)/jv/libgdbs/GDBDebugFlags.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec Thu Jun 19 10:10:52 2014 +0100
+++ b/Make.spec Thu Jun 19 22:16:26 2014 +0100
@@ -51,7 +51,6 @@
COMMON_CLASSES= \
GDBCommand \
- GDBCommandResult \
GDBCommandStatus \
GDBDebugFlags \
GDBEvent \
@@ -67,6 +66,7 @@
GDBAsyncEvent \
GDBCLICommand \
GDBCommandEvent \
+ GDBCommandResult \
GDBCommandResultEvent \
GDBCompoundValueDescriptor \
GDBDriver \
@@ -216,7 +216,6 @@
COMMON_OBJS= \
$(OUTDIR_SLASH)GDBCommand.$(O) \
- $(OUTDIR_SLASH)GDBCommandResult.$(O) \
$(OUTDIR_SLASH)GDBCommandStatus.$(O) \
$(OUTDIR_SLASH)GDBDebugFlags.$(O) \
$(OUTDIR_SLASH)GDBEvent.$(O) \
@@ -232,6 +231,7 @@
$(OUTDIR_SLASH)GDBAsyncEvent.$(O) \
$(OUTDIR_SLASH)GDBCLICommand.$(O) \
$(OUTDIR_SLASH)GDBCommandEvent.$(O) \
+ $(OUTDIR_SLASH)GDBCommandResult.$(O) \
$(OUTDIR_SLASH)GDBCommandResultEvent.$(O) \
$(OUTDIR_SLASH)GDBCompoundValueDescriptor.$(O) \
$(OUTDIR_SLASH)GDBDriver.$(O) \
--- a/abbrev.stc Thu Jun 19 10:10:52 2014 +0100
+++ b/abbrev.stc Thu Jun 19 22:16:26 2014 +0100
@@ -1,6 +1,7 @@
# automagically generated by the project definition
# this file is needed for stc to be able to compile modules independently.
# it provides information about a classes filename, category and especially namespace.
+GDBObject GDBObject jv:libgdbs 'GDB-Core' 0
GDBCommand GDBCommand jv:libgdbs 'GDB-Core-Commands' 0
GDBCommandResult GDBCommandResult jv:libgdbs 'GDB-Core-Commands' 0
GDBCommandStatus GDBCommandStatus jv:libgdbs 'GDB-Core-Commands' 0
@@ -9,7 +10,6 @@
GDBEventSet GDBEventSet jv:libgdbs 'GDB-Core-Events' 0
GDBInternalPipeStream GDBInternalPipeStream jv:libgdbs 'GDB-Support' 0
GDBLauncher GDBLauncher jv:libgdbs 'GDB-Private' 0
-GDBObject GDBObject jv:libgdbs 'GDB-Core' 0
GDBPTY GDBPTY jv:libgdbs 'GDB-Private' 0
GDBValueDescriptor GDBValueDescriptor jv:libgdbs 'GDB-Private-Descriptors' 0
GDBValueDescriptorError GDBValueDescriptorError jv:libgdbs 'GDB-Private-Descriptors' 1
--- a/bc.mak Thu Jun 19 10:10:52 2014 +0100
+++ b/bc.mak Thu Jun 19 22:16:26 2014 +0100
@@ -69,7 +69,6 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
$(OUTDIR)GDBCommand.$(O) GDBCommand.$(H): GDBCommand.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)GDBCommandResult.$(O) GDBCommandResult.$(H): GDBCommandResult.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandStatus.$(O) GDBCommandStatus.$(H): GDBCommandStatus.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
$(OUTDIR)GDBDebugFlags.$(O) GDBDebugFlags.$(H): GDBDebugFlags.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
$(OUTDIR)GDBEvent.$(O) GDBEvent.$(H): GDBEvent.st $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -85,6 +84,7 @@
$(OUTDIR)GDBAsyncEvent.$(O) GDBAsyncEvent.$(H): GDBAsyncEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBCLICommand.$(O) GDBCLICommand.$(H): GDBCLICommand.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommand.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandEvent.$(O) GDBCommandEvent.$(H): GDBCommandEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)GDBCommandResult.$(O) GDBCommandResult.$(H): GDBCommandResult.st $(INCLUDE_TOP)\jv\libgdbs\GDBObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBCommandResultEvent.$(O) GDBCommandResultEvent.$(H): GDBCommandResultEvent.st $(INCLUDE_TOP)\jv\libgdbs\GDBEvent.$(H) $(INCLUDE_TOP)\stx\goodies\announcements\Announcement.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBCompoundValueDescriptor.$(O) GDBCompoundValueDescriptor.$(H): GDBCompoundValueDescriptor.st $(INCLUDE_TOP)\jv\libgdbs\GDBValueDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)GDBDriver.$(O) GDBDriver.$(H): GDBDriver.st $(INCLUDE_TOP)\jv\libgdbs\GDBDebugFlags.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/jv_libgdbs.st Thu Jun 19 10:10:52 2014 +0100
+++ b/jv_libgdbs.st Thu Jun 19 22:16:26 2014 +0100
@@ -64,6 +64,7 @@
^ #(
"<className> or (<className> attributes...) in load order"
+ GDBObject
GDBCommand
GDBCommandResult
GDBCommandStatus
@@ -72,7 +73,6 @@
GDBEventSet
GDBInternalPipeStream
GDBLauncher
- GDBObject
GDBPTY
GDBValueDescriptor
GDBValueDescriptorError
@@ -225,6 +225,8 @@
GDBThreadGroupExitedEvent
GDBThreadGroupStartedEvent
)
+
+ "Modified: / 19-06-2014 / 22:13:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
extensionMethodNames
--- a/libInit.cc Thu Jun 19 10:10:52 2014 +0100
+++ b/libInit.cc Thu Jun 19 22:16:26 2014 +0100
@@ -28,7 +28,6 @@
OBJ snd; struct __vmData__ *__pRT__; {
__BEGIN_PACKAGE2__("libjv_libgdbs", _libjv_libgdbs_Init, "jv:libgdbs");
_GDBCommand_Init(pass,__pRT__,snd);
-_GDBCommandResult_Init(pass,__pRT__,snd);
_GDBCommandStatus_Init(pass,__pRT__,snd);
_GDBDebugFlags_Init(pass,__pRT__,snd);
_GDBEvent_Init(pass,__pRT__,snd);
@@ -44,6 +43,7 @@
_GDBAsyncEvent_Init(pass,__pRT__,snd);
_GDBCLICommand_Init(pass,__pRT__,snd);
_GDBCommandEvent_Init(pass,__pRT__,snd);
+_GDBCommandResult_Init(pass,__pRT__,snd);
_GDBCommandResultEvent_Init(pass,__pRT__,snd);
_GDBCompoundValueDescriptor_Init(pass,__pRT__,snd);
_GDBDriver_Init(pass,__pRT__,snd);
--- a/libgdbs.rc Thu Jun 19 10:10:52 2014 +0100
+++ b/libgdbs.rc Thu Jun 19 22:16:26 2014 +0100
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "LibraryName\0"
VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Thu, 19 Jun 2014 09:09:40 GMT\0"
+ VALUE "ProductDate", "Thu, 19 Jun 2014 21:13:37 GMT\0"
END
END
--- a/tests/GDBParserTests.st Thu Jun 19 10:10:52 2014 +0100
+++ b/tests/GDBParserTests.st Thu Jun 19 22:16:26 2014 +0100
@@ -86,6 +86,20 @@
"Modified: / 03-06-2014 / 00:23:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!GDBParserTests methodsFor:'tests - commands'!
+
+test_command_stack_list_frames_01
+
+ | parser events |
+
+ parser := GDBParser on:'1^done,stack=[frame={level="0",addr="0x00010734",func="callee4",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"},frame={level="1",addr="0x0001076c",func="callee3",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"},frame={level="2",addr="0x0001078c",func="callee2",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"},frame={level="3",addr="0x000107b4",func="callee1",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"},frame={level="4",addr="0x000107e0",func="main",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"}]
+'.
+ parser token2CommandMappingBlock: [ :token | GDBMI_stack_list_frames new ].
+ events := parser parseOutput.
+
+ "Created: / 19-06-2014 / 22:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!GDBParserTests methodsFor:'tests - examples'!
test_simple_example_01
@@ -101,11 +115,10 @@
self assert: events size == 1.
self assert: events first isCommandResultEvent.
self assert: events first result status == CommandStatusDone.
- self assert: events first result value key = 'bkpt'.
- self assert: (events first result value value at: 'addr') = '0x08048564'
+ self assert: ((events first result propertyAt: 'bkpt') at: 'addr') = '0x08048564'
"Created: / 30-05-2014 / 23:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-06-2014 / 07:02:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 21:55:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_simple_example_02
@@ -159,8 +172,7 @@
self assert: events size == 1.
self assert: events first result status == CommandStatusDone.
- self assert: events first result value key = 'bkpt'.
- self assert: (events first result value value at: 'addr') = '0x0000000000400556'.
+ self assert: ((events first result value propertyAt: 'bkpt') at: 'addr') = '0x0000000000400556'.
parser := GDBParser on:'~"Breakpoint 2 at 0x400527: file factorial.c, line 4.\n"
@@ -234,7 +246,7 @@
self assert: (events at:7) type = 'stopped'.
"Created: / 01-06-2014 / 22:57:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 18-06-2014 / 07:02:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-06-2014 / 21:55:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBParserTests methodsFor:'tests - values'!
--- a/tests/tests.rc Thu Jun 19 10:10:52 2014 +0100
+++ b/tests/tests.rc Thu Jun 19 22:16:26 2014 +0100
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "LibraryName\0"
VALUE "ProductVersion", "6.2.4.0\0"
- VALUE "ProductDate", "Thu, 19 Jun 2014 09:09:42 GMT\0"
+ VALUE "ProductDate", "Thu, 19 Jun 2014 21:13:39 GMT\0"
END
END