'\" '\" Copyright (c) 1993-1998 Lucent Technologies, Inc. '\" '\" See the file "license.terms" for information on usage and redistribution '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. '\" .TH scope n "" itcl "[incr\ Tcl]" .so man.macros .BS '\" Note: do not modify the .SH NAME line immediately below! .SH NAME itcl::scope \- capture the namespace context for a variable .SH SYNOPSIS \fBitcl::scope \fIname\fR .BE .SH DESCRIPTION .PP Creates a scoped value for the specified \fIname\fR, which must be a variable name. If the \fIname\fR is an instance variable, then the scope command returns a name which will resolve in any context as an instance variable belonging to \fIobject\fR. The precise format of this name is an internal detail to Itcl. Use of such a scoped value makes it possible to use instance variables in conjunction with widgets. For example, if you have an object with a private variable \fCx\fR, and you can use \fCx\fR in conjunction with the \fC-textvariable\fR option of an entry widget. Before itcl3.0, only common variables could be used in this manner. .PP If the \fIname\fR is not an instance variable, then it must be a common variable or a global variable. In that case, the scope command returns the fully qualified name of the variable, e.g., \fC::foo::bar::x\fR. .PP If the \fIname\fR is not recognized as a variable, the scope command returns an error. .PP Ordinary variable names refer to variables in the global namespace. A scoped value captures a variable name together with its namespace context in a way that allows it to be referenced properly later. It is needed, for example, to wrap up variable names when a Tk widget is used within a namespace: .CS namespace foo { private variable mode 1 radiobutton .rb1 -text "Mode #1" \ -variable [scope mode] -value 1 pack .rb1 radiobutton .rb2 -text "Mode #2" \ -variable [scope mode] -value 2 pack .rb2 } .CE Radiobuttons \fC.rb1\fR and \fC.rb2\fR interact via the variable "mode" contained in the namespace "foo". The \fBscope\fR command guarantees this by returning the fully qualified variable name \fC::foo::mode\fR. .PP You should never attempt to craft your own scoped variable names, even if you believe you've flawlessly reverse-engineered the encoding. Instead, you should always use the scope command to generate the variable name dynamically. Then, you can pass that name to a widget or to any other bit of code in your program. .SH KEYWORDS code, namespace, variable