GDBBreakpoint.st
changeset 120 73877848ea7f
parent 106 12c96f17fc53
child 177 e7bd05df3d6b
--- a/GDBBreakpoint.st	Tue Apr 03 21:19:35 2018 +0100
+++ b/GDBBreakpoint.st	Wed May 23 10:22:36 2018 +0100
@@ -22,7 +22,7 @@
 
 GDBDebuggerObject subclass:#GDBBreakpoint
 	instanceVariableNames:'number type disp enabled addr func file fullname line times
-		condition script'
+		condition script locations'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'GDB-Core'
@@ -55,7 +55,7 @@
 
 description
     ^ (super description)
-        define:#number as:Integer;
+        define:#number as:String;
         define:#type as:String;
         define:#disp as:String;
         define:#enabled as:Boolean;
@@ -68,6 +68,7 @@
         yourself
 
     "Created: / 06-09-2014 / 01:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2018 / 12:38:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBBreakpoint methodsFor:'accessing'!
@@ -129,6 +130,24 @@
     ^ line
 !
 
+locations
+    locations isNil ifTrue:[ ^ Array with: self ].
+    ^ locations
+
+    "Modified: / 18-05-2018 / 12:23:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+locations:aCollection
+    self assert:  aCollection isCollection.
+    self assert: (aCollection allSatisfy:[:e|e isKindOf: GDBBreakpoint]).
+    self assert: (aCollection allSatisfy:[:e|e number startsWith: number , '.']).
+
+    locations := aCollection.
+    locations do:[:e|e setDebugger: debugger].
+
+    "Modified: / 18-05-2018 / 15:01:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 number
     ^ number
 !
@@ -178,6 +197,17 @@
     "Modified: / 06-06-2017 / 09:19:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!GDBBreakpoint methodsFor:'initialization & release'!
+
+setDebugger: aGDBDebugger
+    super setDebugger: aGDBDebugger.
+    locations notEmptyOrNil ifTrue:[ 
+        locations do:[:e | e setDebugger: debugger ]
+    ].
+
+    "Created: / 18-05-2018 / 15:00:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !GDBBreakpoint methodsFor:'inspecting'!
 
 inspector2TabCondition
@@ -262,14 +292,20 @@
 !
 
 updateFrom: aGDBBreakpoint
+    | ignored |
+
     self assert: number = aGDBBreakpoint number.
+    ignored := self class instVarIndexFor: #locations.  
     self class superclass instSize + 1 to: self class instSize do:[:i | 
-        self instVarAt: i put: (aGDBBreakpoint instVarAt: i).
+        i ~~ ignored ifTrue:[
+            self instVarAt: i put: (aGDBBreakpoint instVarAt: i).
+        ].
     ].
     properties := aGDBBreakpoint properties.
 
     "Created: / 06-07-2017 / 16:30:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-01-2018 / 23:12:02 / jv"
+    "Modified: / 18-05-2018 / 21:44:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBBreakpoint methodsFor:'testing'!