⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advice.tcl

📁 windows下的GDB insight前端
💻 TCL
字号:
# advice.tcl - Generic advice package.# Copyright (C) 1998 Cygnus Solutions.# Written by Tom Tromey <tromey@cygnus.com>.# Please note that I adapted this from some code I wrote elsewhere,# for non-Cygnus reasons.  Don't complain to me if you see something# like it somewhere else.# Internal state.defarray ADVICE_state# This is a helper proc that does all the actual work.proc ADVICE_do {command argList} {  global ADVICE_state  # Run before advice.  if {[info exists ADVICE_state(before,$command)]} {    foreach item $ADVICE_state(before,$command) {      # We purposely let errors in advice go uncaught.      uplevel $item $argList    }  }  # Run the command itself.  set code [catch \	      [list uplevel \#0 $ADVICE_state(original,$command) $argList] \	      result]  # Run the after advice.  if {[info exists ADVICE_state(after,$command)]} {    foreach item $ADVICE_state(after,$command) {      # We purposely let errors in advice go uncaught.      uplevel $item [list $code $result] $argList    }  }  # Return just as the original command would.  return -code $code $result}# Put some advice on a proc or command.#  WHEN says when to run the advice - `before' or `after' the#     advisee is run.#  WHAT is the name of the proc or command to advise.#  ADVISOR is the advice.  It is passed the arguments to the advisee#     call as its arguments.  In addition, `after' advisors are#     passed the return code and return value of the proc as their#     first and second arguments.proc advise {when what advisor} {  global ADVICE_state  if {! [info exists ADVICE_state(original,$what)]} {    set newName [gensym]    rename $what $newName    set ADVICE_state(original,$what) $newName    # Create a new proc which just runs our internal command with the    # correct arguments.    uplevel \#0 [list proc $what args \		   [format {ADVICE_do %s $args} $what]]  }  lappend ADVICE_state($when,$what) $advisor}# Remove some previously-set advice.  Note that we could undo the# `rename' when the last advisor is removed.  This adds complexity,# though, and there isn't much reason to.proc unadvise {when what advisor} {  global ADVICE_state  if {[info exists ADVICE_state($when,$what)]} {    set newList {}    foreach item $ADVICE_state($when,$what) {      if {[string compare $advisor $item]} {	lappend newList $item      }    }    set ADVICE_state($when,$what) $newList  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -