summaryrefslogtreecommitdiff
path: root/itcl/iwidgets3.0.0/generic/scopedobject.itcl
diff options
context:
space:
mode:
Diffstat (limited to 'itcl/iwidgets3.0.0/generic/scopedobject.itcl')
-rwxr-xr-xitcl/iwidgets3.0.0/generic/scopedobject.itcl181
1 files changed, 0 insertions, 181 deletions
diff --git a/itcl/iwidgets3.0.0/generic/scopedobject.itcl b/itcl/iwidgets3.0.0/generic/scopedobject.itcl
deleted file mode 100755
index 8a274c77777..00000000000
--- a/itcl/iwidgets3.0.0/generic/scopedobject.itcl
+++ /dev/null
@@ -1,181 +0,0 @@
-#
-# Scopedobject
-# -----------------------------------------------------------------------------
-# Implements a base class for defining Itcl classes which posses
-# scoped behavior like Tcl variables. The objects are only accessible
-# within the procedure in which they are instantiated and are deleted
-# when the procedure returns.
-#
-# Option(s):
-#
-# -enterscopecommand: Tcl command to invoke when a object enters scope
-# (i.e. when it is created ...).
-#
-# -exitscopecommand: Tcl command to invoke when a object exits scope
-# (i.e. when it is deleted ...).
-#
-# Note(s):
-#
-# Although a Scopedobject instance will automatically destroy itself
-# when it goes out of scope, one may explicity delete an instance
-# before it destroys itself.
-#
-# Example(s):
-#
-# Creating an instance at local scope in a procedure provides
-# an opportunity for tracing the entry and exiting of that
-# procedure. Users can register their proc/method tracing handlers
-# with the Scopedobject class via either of the following two ways:
-#
-# 1.) configure the "-exitscopecommand" on a Scopedobject instance;
-# e.g.
-# #!/usr/local/bin/wish
-#
-# proc tracedProc {} {
-# scopedobject #auto \
-# -exitscopecommand {puts "enter tracedProc"} \
-# -exitscopecommand {puts "exit tracedProc"}
-# }
-#
-# 2.) deriving from the Scopedobject and implementing the exit handling
-# in their derived classes destructor.
-# e.g.
-#
-# #!/usr/local/bin/wish
-#
-# class Proctrace {
-# inherit Scopedobject
-#
-# proc procname {} {
-# return [info level -1]
-# }
-#
-# constructor {args} {
-# puts "enter [procname]"
-# eval configure $args
-# }
-#
-# destructor {
-# puts "exit [procname]"
-# }
-# }
-#
-# proc tracedProc {} {
-# Proctrace #auto
-# }
-#
-# -----------------------------------------------------------------------------
-# AUTHOR: John Tucker
-# DSC Communications Corp
-# -----------------------------------------------------------------------------
-
-class iwidgets::Scopedobject {
-
- #
- # OPTIONS:
- #
- public {
- variable enterscopecommand {}
- variable exitscopecommand {}
- }
-
- #
- # PUBLIC:
- #
- constructor {args} {}
- destructor {}
-
- #
- # PRIVATE:
- #
- private {
-
- # Implements the Tcl trace command callback which is responsible
- # for destroying a Scopedobject instance when its corresponding
- # Tcl variable goes out of scope.
- #
- method _traceCommand {varName varValue op}
-
- # Stores the stack level of the invoking procedure in which
- # a Scopedobject instance in created.
- #
- variable _level 0
- }
-}
-
-#
-# Provide a lowercased access method for the Scopedobject class.
-#
-proc ::iwidgets::scopedobject {pathName args} {
- uplevel ::iwidgets::Scopedobject $pathName $args
-}
-
-#--------------------------------------------------------------------------------
-# CONSTRUCTOR
-#--------------------------------------------------------------------------------
-body iwidgets::Scopedobject::constructor {args} {
-
- # Create a local variable in the procedure which this instance was created,
- # and then register out instance deletion command (i.e. _traceCommand)
- # to be called whenever the local variable is unset.
- #
- # If this is a derived class, then we will need to perform the variable creation
- # and tracing N levels up the stack frame, where:
- # N = depth of inheritance hierarchy.
- #
- set depth [llength [$this info heritage]]
- set _level "#[uplevel $depth info level]"
- uplevel $_level set _localVar($this) $this
- uplevel $_level trace variable _localVar($this) u \"[code $this _traceCommand]\"
-
- eval configure $args
-
- if {$enterscopecommand != {}} {
- eval $enterscopecommand
- }
-}
-
-#--------------------------------------------------------------------------------
-# DESTRUCTOR
-#--------------------------------------------------------------------------------
-body iwidgets::Scopedobject::destructor {} {
-
- uplevel $_level trace vdelete _localVar($this) u \"[code $this _traceCommand]\"
-
- if {$exitscopecommand != {}} {
- eval $exitscopecommand
- }
-}
-
-#--------------------------------------------------------------------------------#
-#
-# METHOD: _traceCommand
-#
-# PURPOSE:
-# Callback used to destroy instances when their locally created variable
-# goes out of scope.
-#
-body iwidgets::Scopedobject::_traceCommand {varName varValue op} {
- delete object $this
-}
-
-#------------------------------------------------------------------------------
-#
-# OPTION: -enterscopecommand
-#
-# PURPOSE:
-# Specifies a Tcl command to invoke when a object enters scope.
-#
-configbody iwidgets::Scopedobject::enterscopecommand {
-}
-
-#------------------------------------------------------------------------------
-#
-# OPTION: -exitscopecommand
-#
-# PURPOSE:
-# Specifies a Tcl command to invoke when an object exits scope.
-#
-configbody iwidgets::Scopedobject::exitscopecommand {
-}
-