| # GDB event class implementations for Insight. |
| # Copyright (C) 2001 Red Hat, Inc. |
| # |
| # This program is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License (GPL) as published by |
| # the Free Software Foundation; either version 2 of the License, or (at |
| # your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # ------------------------------------------------------------ |
| # PUBLIC METHOD: get - Retrieve data about the event |
| # ------------------------------------------------------------ |
| itcl::body BreakpointEvent::get {what} { |
| |
| switch $what { |
| action { return $action } |
| number { return $number } |
| file { return $_file } |
| function { return $_function } |
| line { return $_line } |
| address { return $_address } |
| type { return $_type } |
| enabled { return $_enabled } |
| disposition { return $_disposition } |
| ignore_count { return $_ignore_count } |
| commands { return $_commands } |
| condition { return $_condition } |
| thread { return $_thread } |
| hit_count { return $_hit_count } |
| user_specification { return $_user_specification } |
| |
| default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|type|enabled|disposition|ignore_count|commands|condition|thread|hit_count|user_specification" } |
| } |
| } |
| |
| # ------------------------------------------------------------ |
| # PRIVATE METHOD: _init - Initialize all private data |
| # ------------------------------------------------------------ |
| itcl::body BreakpointEvent::_init {} { |
| if {[catch {gdb_get_breakpoint_info $number} bpinfo]} { |
| set _file {} |
| set _function {} |
| set _line {} |
| set _address {} |
| set _type {} |
| set _enabled {} |
| set _disposition {} |
| set _ignore_count {} |
| set _commands {} |
| set _condition {} |
| set _thread {} |
| set _hit_count {} |
| set _user_specification {} |
| } else { |
| lassign $bpinfo \ |
| _file \ |
| _function \ |
| _line \ |
| _address \ |
| _type \ |
| _enabled \ |
| _disposition \ |
| _ignore_count \ |
| _commands \ |
| _condition \ |
| _thread \ |
| _hit_count \ |
| _user_specification |
| } |
| } |
| |
| # When the breakpoint number for the event changes, |
| # update the private data in the event. |
| itcl::configbody BreakpointEvent::number { |
| _init |
| } |
| |
| # ------------------------------------------------------------ |
| # PUBLIC METHOD: get - Retrieve data about the event |
| # ------------------------------------------------------------ |
| itcl::body TracepointEvent::get {what} { |
| |
| switch $what { |
| action { return $action } |
| number { return $number } |
| file { return $_file } |
| function { return $_function } |
| line { return $_line } |
| address { return $_address } |
| enabled { return $_enabled } |
| pass_count { return $_pass_count } |
| step_count { return $_step_count } |
| thread { return $_thread } |
| hit_count { return $_hit_count } |
| actions { return $_actions } |
| |
| default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|pass_count|step_count|thread|hit_count|actions" } |
| } |
| } |
| |
| # ------------------------------------------------------------ |
| # PRIVATE METHOD: _init - Initialize all private data |
| # ------------------------------------------------------------ |
| itcl::body TracepointEvent::_init {} { |
| if {[catch {gdb_get_tracepoint_info $number} tpinfo]} { |
| set _file {} |
| set _function {} |
| set _line {} |
| set _address {} |
| set _enabled {} |
| set _pass_count {} |
| set _step_count {} |
| set _thread {} |
| set _hit_count {} |
| set _actions {} |
| } else { |
| lassign $tpinfo \ |
| _file \ |
| _function \ |
| _line \ |
| _address \ |
| _enabled \ |
| _pass_count \ |
| _step_count \ |
| _thread \ |
| _hit_count \ |
| _actions |
| } |
| } |
| |
| # When the tracepoint number for the event changes, |
| # update the private data in the event. |
| itcl::configbody TracepointEvent::number { |
| _init |
| } |
| |
| # ------------------------------------------------------------ |
| # PUBLIC METHOD: get - Retrieve data about the event |
| # ------------------------------------------------------------ |
| itcl::body TracepointEvent::get {what} { |
| |
| switch $what { |
| action { return $action } |
| number { return $number } |
| file { return $_file } |
| function { return $_function } |
| line { return $_line } |
| address { return $_address } |
| enabled { return $_enabled } |
| pass_count { return $_pass_count } |
| step_count { return $_step_count } |
| thread { return $_thread } |
| hit_count { return $_hit_count } |
| actions { return $_actions } |
| |
| default { error "unknown event data \"$what\": should be: action|number|file|function|line|address|pass_count|step_count|thread|hit_count|actions" } |
| } |
| } |
| |
| # ------------------------------------------------------------ |
| # PUBLIC METHOD: get - Retrieve data about the event |
| # ------------------------------------------------------------ |
| itcl::body SetVariableEvent::get {what} { |
| |
| switch $what { |
| variable { return $variable } |
| value { return $value } |
| |
| default { error "unknown event data \"$what\": should be: variable|value" } |
| } |
| } |
| |
| # ------------------------------------------------------------ |
| # CONSTRUCTOR: Create an UpdateEvent |
| # ------------------------------------------------------------ |
| itcl::body UpdateEvent::constructor {args} { |
| if {[catch {gdb_loc} loc]} { |
| dbug E "could not get current location: $loc" |
| } else { |
| lassign $loc _compile_filename _function _full_filename \ |
| _line _frame_pc _pc _shlib |
| } |
| } |
| |
| # ------------------------------------------------------------ |
| # PUBLIC METHOD: get - Retrieve data about the event |
| # ------------------------------------------------------------ |
| itcl::body UpdateEvent::get {what} { |
| |
| switch $what { |
| compile_filename { return $_compile_filename } |
| full_filename { return $_full_filename } |
| function { return $_function } |
| line { return $_line } |
| frame_pc { return $_frame_pc } |
| pc { return $_pc } |
| shlib { return $_shlib } |
| |
| default { error "unknown event data \"$what\": should be: variable|value" } |
| } |
| } |