summaryrefslogtreecommitdiffstats
path: root/tcl8.6/doc/info.n
diff options
context:
space:
mode:
Diffstat (limited to 'tcl8.6/doc/info.n')
-rw-r--r--tcl8.6/doc/info.n777
1 files changed, 0 insertions, 777 deletions
diff --git a/tcl8.6/doc/info.n b/tcl8.6/doc/info.n
deleted file mode 100644
index 1ad908d..0000000
--- a/tcl8.6/doc/info.n
+++ /dev/null
@@ -1,777 +0,0 @@
-'\"
-'\" Copyright (c) 1993 The Regents of the University of California.
-'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
-'\" Copyright (c) 1993-1997 Bell Labs Innovations for Lucent Technologies
-'\" Copyright (c) 1998-2000 Ajuba Solutions
-'\" Copyright (c) 2007-2012 Donal K. Fellows
-'\"
-'\" See the file "license.terms" for information on usage and redistribution
-'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-'\"
-.TH info n 8.4 Tcl "Tcl Built-In Commands"
-.so man.macros
-.BS
-'\" Note: do not modify the .SH NAME line immediately below!
-.SH NAME
-info \- Return information about the state of the Tcl interpreter
-.SH SYNOPSIS
-\fBinfo \fIoption \fR?\fIarg arg ...\fR?
-.BE
-.SH DESCRIPTION
-.PP
-This command provides information about various internals of the Tcl
-interpreter.
-The legal \fIoption\fRs (which may be abbreviated) are:
-.TP
-\fBinfo args \fIprocname\fR
-.
-Returns a list containing the names of the arguments to procedure
-\fIprocname\fR, in order. \fIProcname\fR must be the name of a
-Tcl command procedure.
-.TP
-\fBinfo body \fIprocname\fR
-.
-Returns the body of procedure \fIprocname\fR. \fIProcname\fR must be
-the name of a Tcl command procedure.
-.TP
-\fBinfo class\fI subcommand class\fR ?\fIarg ...\fR
-.VS 8.6
-Returns information about the class, \fIclass\fR. The \fIsubcommand\fRs are
-described in \fBCLASS INTROSPECTION\fR below.
-.VE 8.6
-.TP
-\fBinfo cmdcount\fR
-.
-Returns a count of the total number of commands that have been invoked
-in this interpreter.
-.TP
-\fBinfo commands \fR?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified,
-returns a list of names of all the Tcl commands visible
-(i.e. executable without using a qualified name) to the current namespace,
-including both the built-in commands written in C and
-the command procedures defined using the \fBproc\fR command.
-If \fIpattern\fR is specified,
-only those names matching \fIpattern\fR are returned.
-Matching is determined using the same rules as for \fBstring match\fR.
-\fIpattern\fR can be a qualified name like \fBFoo::print*\fR.
-That is, it may specify a particular namespace
-using a sequence of namespace names separated by double colons (\fB::\fR),
-and may have pattern matching special characters
-at the end to specify a set of commands in that namespace.
-If \fIpattern\fR is a qualified name,
-the resulting list of command names has each one qualified with the name
-of the specified namespace, and only the commands defined in the named
-namespace are returned.
-.\" Technically, most of this hasn't changed; that's mostly just the
-.\" way it always worked. Hardly anyone knew that though.
-.TP
-\fBinfo complete \fIcommand\fR
-.
-Returns 1 if \fIcommand\fR is a complete Tcl command in the sense of
-having no unclosed quotes, braces, brackets or array element names.
-If the command does not appear to be complete then 0 is returned.
-This command is typically used in line-oriented input environments
-to allow users to type in commands that span multiple lines; if the
-command is not complete, the script can delay evaluating it until additional
-lines have been typed to complete the command.
-.TP
-\fBinfo coroutine\fR
-.VS 8.6
-Returns the name of the currently executing \fBcoroutine\fR, or the empty
-string if either no coroutine is currently executing, or the current coroutine
-has been deleted (but has not yet returned or yielded since deletion).
-.VE 8.6
-.TP
-\fBinfo default \fIprocname arg varname\fR
-.
-\fIProcname\fR must be the name of a Tcl command procedure and \fIarg\fR
-must be the name of an argument to that procedure. If \fIarg\fR
-does not have a default value then the command returns \fB0\fR.
-Otherwise it returns \fB1\fR and places the default value of \fIarg\fR
-into variable \fIvarname\fR.
-.TP
-\fBinfo errorstack \fR?\fIinterp\fR?
-.VS 8.6
-Returns, in a form that is programmatically easy to parse, the function names
-and arguments at each level from the call stack of the last error in the given
-\fIinterp\fR, or in the current one if not specified.
-.RS
-.PP
-This form is an even-sized list alternating tokens and parameters. Tokens are
-currently either \fBCALL\fR, \fBUP\fR, or \fBINNER\fR, but other values may be
-introduced in the future. \fBCALL\fR indicates a procedure call, and its
-parameter is the corresponding \fBinfo level\fR \fB0\fR. \fBUP\fR indicates a
-shift in variable frames generated by \fBuplevel\fR or similar, and applies to
-the previous \fBCALL\fR item. Its parameter is the level offset. \fBINNER\fR
-identifies the
-.QW "inner context" ,
-which is the innermost atomic command or bytecode instruction that raised the
-error, along with its arguments when available. While \fBCALL\fR and \fBUP\fR
-allow to follow complex call paths, \fBINNER\fR homes in on the offending
-operation in the innermost procedure call, even going to sub-expression
-granularity.
-.PP
-This information is also present in the \fB\-errorstack\fR entry of the
-options dictionary returned by 3-argument \fBcatch\fR; \fBinfo errorstack\fR
-is a convenient way of retrieving it for uncaught errors at top-level in an
-interactive \fBtclsh\fR.
-.RE
-.VE 8.6
-.TP
-\fBinfo exists \fIvarName\fR
-.
-Returns \fB1\fR if the variable named \fIvarName\fR exists in the
-current context (either as a global or local variable) and has been
-defined by being given a value, returns \fB0\fR otherwise.
-.TP
-\fBinfo frame\fR ?\fInumber\fR?
-.
-This command provides access to all frames on the stack, even those
-hidden from \fBinfo level\fR. If \fInumber\fR is not specified, this
-command returns a number giving the frame level of the command. This
-is 1 if the command is invoked at top-level. If \fInumber\fR is
-specified, then the result is a dictionary containing the location
-information for the command at the \fInumber\fRed level on the stack.
-.RS
-.PP
-If \fInumber\fR is positive (> 0) then it selects a particular stack
-level (1 refers to the outer-most active command, 2 to the command it
-called, and so on, up to the current frame level which refers to
-\fBinfo frame\fR itself); otherwise it gives a level relative to the
-current command (0 refers to the current command, i.e., \fBinfo
-frame\fR itself, -1 to its caller, and so on).
-.PP
-This is similar to how \fBinfo level\fR works, except that this
-subcommand reports all frames, like \fBsource\fRd scripts,
-\fBeval\fRs, \fBuplevel\fRs, etc.
-.PP
-Note that for nested commands, like
-.QW "foo [bar [x]]" ,
-only
-.QW x
-will be seen by an \fBinfo frame\fR invoked within
-.QW x .
-This is the same as for \fBinfo level\fR and error stack traces.
-.PP
-The result dictionary may contain the keys listed below, with the
-specified meanings for their values:
-.TP
-\fBtype\fR
-.
-This entry is always present and describes the nature of the location
-for the command. The recognized values are \fBsource\fR, \fBproc\fR,
-\fBeval\fR, and \fBprecompiled\fR.
-.RS
-.TP
-\fBsource\fR\0\0\0\0\0\0\0\0
-.
-means that the command is found in a script loaded by the \fBsource\fR
-command.
-.TP
-\fBproc\fR\0\0\0\0\0\0\0\0
-.
-means that the command is found in dynamically created procedure body.
-.TP
-\fBeval\fR\0\0\0\0\0\0\0\0
-.
-means that the command is executed by \fBeval\fR or \fBuplevel\fR.
-.TP
-\fBprecompiled\fR\0\0\0\0\0\0\0\0
-.
-means that the command is found in a pre-compiled script (loadable by
-the package \fBtbcload\fR), and no further information will be
-available.
-.RE
-.TP
-\fBline\fR
-.
-This entry provides the number of the line the command is at inside of
-the script it is a part of. This information is not present for type
-\fBprecompiled\fR. For type \fBsource\fR this information is counted
-relative to the beginning of the file, whereas for the last two types
-the line is counted relative to the start of the script.
-.TP
-\fBfile\fR
-.
-This entry is present only for type \fBsource\fR. It provides the
-normalized path of the file the command is in.
-.TP
-\fBcmd\fR
-.
-This entry provides the string representation of the command. This is
-usually the unsubstituted form, however for commands which are a
-canonically-constructed list (e.g., as produced by the \fBlist\fR command)
-executed by \fBeval\fR it is the substituted form as they have no other
-string representation. Care is taken that the canonicality property of
-the latter is not spoiled.
-.TP
-\fBproc\fR
-.
-This entry is present only if the command is found in the body of a
-regular Tcl procedure. It then provides the name of that procedure.
-.TP
-\fBlambda\fR
-.
-This entry is present only if the command is found in the body of an
-anonymous Tcl procedure, i.e. a lambda. It then provides the entire
-definition of the lambda in question.
-.TP
-\fBlevel\fR
-.
-This entry is present only if the queried frame has a corresponding
-frame returned by \fBinfo level\fR. It provides the index of this
-frame, relative to the current level (0 and negative numbers).
-.PP
-A thing of note is that for procedures statically defined in files the
-locations of commands in their bodies will be reported with type
-\fBsource\fR and absolute line numbers, and not as type
-\fBproc\fR. The same is true for procedures nested in statically
-defined procedures, and literal eval scripts in files or statically
-defined procedures.
-.PP
-In contrast, procedure definitions and \fBeval\fR within a dynamically
-\fBeval\fRuated environment count line numbers relative to the start of
-their script, even if they would be able to count relative to the
-start of the outer dynamic script. That type of number usually makes
-more sense.
-.PP
-A different way of describing this behaviour is that file based
-locations are tracked as deeply as possible, and where this is not
-possible the lines are counted based on the smallest possible
-\fBeval\fR or procedure body, as that scope is usually easier to find
-than any dynamic outer scope.
-.PP
-The syntactic form \fB{*}\fR is handled like \fBeval\fR. I.e. if it
-is given a literal list argument the system tracks the line number
-within the list words as well, and otherwise all line numbers are
-counted relative to the start of each word (smallest scope)
-.RE
-.TP
-\fBinfo functions \fR?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified, returns a list of all the math
-functions currently defined.
-If \fIpattern\fR is specified, only those functions whose name matches
-\fIpattern\fR are returned. Matching is determined using the same
-rules as for \fBstring match\fR.
-.TP
-\fBinfo globals \fR?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified, returns a list of all the names
-of currently-defined global variables.
-Global variables are variables in the global namespace.
-If \fIpattern\fR is specified, only those names matching \fIpattern\fR
-are returned. Matching is determined using the same rules as for
-\fBstring match\fR.
-.TP
-\fBinfo hostname\fR
-.
-Returns the name of the computer on which this invocation is being
-executed.
-Note that this name is not guaranteed to be the fully qualified domain
-name of the host. Where machines have several different names (as is
-common on systems with both TCP/IP (DNS) and NetBIOS-based networking
-installed,) it is the name that is suitable for TCP/IP networking that
-is returned.
-.TP
-\fBinfo level\fR ?\fInumber\fR?
-.
-If \fInumber\fR is not specified, this command returns a number
-giving the stack level of the invoking procedure, or 0 if the
-command is invoked at top-level. If \fInumber\fR is specified,
-then the result is a list consisting of the name and arguments for the
-procedure call at level \fInumber\fR on the stack. If \fInumber\fR
-is positive then it selects a particular stack level (1 refers
-to the top-most active procedure, 2 to the procedure it called, and
-so on); otherwise it gives a level relative to the current level
-(0 refers to the current procedure, -1 to its caller, and so on).
-See the \fBuplevel\fR command for more information on what stack
-levels mean.
-.TP
-\fBinfo library\fR
-.
-Returns the name of the library directory in which standard Tcl
-scripts are stored.
-This is actually the value of the \fBtcl_library\fR
-variable and may be changed by setting \fBtcl_library\fR.
-.TP
-\fBinfo loaded \fR?\fIinterp\fR?
-.
-Returns a list describing all of the packages that have been loaded into
-\fIinterp\fR with the \fBload\fR command.
-Each list element is a sub-list with two elements consisting of the
-name of the file from which the package was loaded and the name of
-the package.
-For statically-loaded packages the file name will be an empty string.
-If \fIinterp\fR is omitted then information is returned for all packages
-loaded in any interpreter in the process.
-To get a list of just the packages in the current interpreter, specify
-an empty string for the \fIinterp\fR argument.
-.TP
-\fBinfo locals \fR?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified, returns a list of all the names
-of currently-defined local variables, including arguments to the
-current procedure, if any.
-Variables defined with the \fBglobal\fR, \fBupvar\fR and
-\fBvariable\fR commands will not be returned.
-If \fIpattern\fR is specified, only those names matching \fIpattern\fR
-are returned. Matching is determined using the same rules as for
-\fBstring match\fR.
-.TP
-\fBinfo nameofexecutable\fR
-.
-Returns the full path name of the binary file from which the application
-was invoked. If Tcl was unable to identify the file, then an empty
-string is returned.
-.TP
-\fBinfo object\fI subcommand object\fR ?\fIarg ...\fR
-.VS 8.6
-Returns information about the object, \fIobject\fR. The \fIsubcommand\fRs are
-described in \fBOBJECT INTROSPECTION\fR below.
-.VE 8.6
-.TP
-\fBinfo patchlevel\fR
-.
-Returns the value of the global variable \fBtcl_patchLevel\fR, which holds
-the exact version of the Tcl library by default.
-.TP
-\fBinfo procs \fR?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified, returns a list of all the
-names of Tcl command procedures in the current namespace.
-If \fIpattern\fR is specified,
-only those procedure names in the current namespace
-matching \fIpattern\fR are returned.
-Matching is determined using the same rules as for
-\fBstring match\fR.
-If \fIpattern\fR contains any namespace separators, they are used to
-select a namespace relative to the current namespace (or relative to
-the global namespace if \fIpattern\fR starts with \fB::\fR) to match
-within; the matching pattern is taken to be the part after the last
-namespace separator.
-.TP
-\fBinfo script\fR ?\fIfilename\fR?
-.
-If a Tcl script file is currently being evaluated (i.e. there is a
-call to \fBTcl_EvalFile\fR active or there is an active invocation
-of the \fBsource\fR command), then this command returns the name
-of the innermost file being processed. If \fIfilename\fR is specified,
-then the return value of this command will be modified for the
-duration of the active invocation to return that name. This is
-useful in virtual file system applications.
-Otherwise the command returns an empty string.
-.TP
-\fBinfo sharedlibextension\fR
-.
-Returns the extension used on this platform for the names of files
-containing shared libraries (for example, \fB.so\fR under Solaris).
-If shared libraries are not supported on this platform then an empty
-string is returned.
-.TP
-\fBinfo tclversion\fR
-.
-Returns the value of the global variable \fBtcl_version\fR, which holds the
-major and minor version of the Tcl library by default.
-.TP
-\fBinfo vars\fR ?\fIpattern\fR?
-.
-If \fIpattern\fR is not specified,
-returns a list of all the names of currently-visible variables.
-This includes locals and currently-visible globals.
-If \fIpattern\fR is specified, only those names matching \fIpattern\fR
-are returned. Matching is determined using the same rules as for
-\fBstring match\fR.
-\fIpattern\fR can be a qualified name like \fBFoo::option*\fR.
-That is, it may specify a particular namespace
-using a sequence of namespace names separated by double colons (\fB::\fR),
-and may have pattern matching special characters
-at the end to specify a set of variables in that namespace.
-If \fIpattern\fR is a qualified name,
-the resulting list of variable names
-has each matching namespace variable qualified with the name
-of its namespace.
-Note that a currently-visible variable may not yet
-.QW exist
-if it has not
-been set (e.g. a variable declared but not set by \fBvariable\fR).
-.SS "CLASS INTROSPECTION"
-.VS 8.6
-.PP
-The following \fIsubcommand\fR values are supported by \fBinfo class\fR:
-.VE 8.6
-.TP
-\fBinfo class call\fI class method\fR
-.VS
-Returns a description of the method implementations that are used to provide a
-stereotypical instance of \fIclass\fR's implementation of \fImethod\fR
-(stereotypical instances being objects instantiated by a class without having
-any object-specific definitions added). This consists of a list of lists of
-four elements, where each sublist consists of a word that describes the
-general type of method implementation (being one of \fBmethod\fR for an
-ordinary method, \fBfilter\fR for an applied filter, and \fBunknown\fR for a
-method that is invoked as part of unknown method handling), a word giving the
-name of the particular method invoked (which is always the same as
-\fImethod\fR for the \fBmethod\fR type, and
-.QW \fBunknown\fR
-for the \fBunknown\fR type), a word giving the fully qualified name of the
-class that defined the method, and a word describing the type of method
-implementation (see \fBinfo class methodtype\fR).
-.RS
-.PP
-Note that there is no inspection of whether the method implementations
-actually use \fBnext\fR to transfer control along the call chain.
-.RE
-.VE 8.6
-.TP
-\fBinfo class constructor\fI class\fR
-.VS 8.6
-This subcommand returns a description of the definition of the constructor of
-class \fIclass\fR. The definition is described as a two element list; the first
-element is the list of arguments to the constructor in a form suitable for
-passing to another call to \fBproc\fR or a method definition, and the second
-element is the body of the constructor. If no constructor is present, this
-returns the empty list.
-.VE 8.6
-.TP
-\fBinfo class definition\fI class method\fR
-.VS 8.6
-This subcommand returns a description of the definition of the method named
-\fImethod\fR of class \fIclass\fR. The definition is described as a two element
-list; the first element is the list of arguments to the method in a form
-suitable for passing to another call to \fBproc\fR or a method definition, and
-the second element is the body of the method.
-.VE 8.6
-.TP
-\fBinfo class destructor\fI class\fR
-.VS 8.6
-This subcommand returns the body of the destructor of class \fIclass\fR. If no
-destructor is present, this returns the empty string.
-.VE 8.6
-.TP
-\fBinfo class filters\fI class\fR
-.VS 8.6
-This subcommand returns the list of filter methods set on the class.
-.VE 8.6
-.TP
-\fBinfo class forward\fI class method\fR
-.VS 8.6
-This subcommand returns the argument list for the method forwarding called
-\fImethod\fR that is set on the class called \fIclass\fR.
-.VE 8.6
-.TP
-\fBinfo class instances\fI class\fR ?\fIpattern\fR?
-.VS 8.6
-This subcommand returns a list of instances of class \fIclass\fR. If the
-optional \fIpattern\fR argument is present, it constrains the list of returned
-instances to those that match it according to the rules of \fBstring match\fR.
-.VE 8.6
-.TP
-\fBinfo class methods\fI class\fR ?\fIoptions...\fR?
-.VS 8.6
-This subcommand returns a list of all public (i.e. exported) methods of the
-class called \fIclass\fR. Any of the following \fIoption\fRs may be
-specified, controlling exactly which method names are returned:
-.RS
-.VE 8.6
-.TP
-\fB\-all\fR
-.VS 8.6
-If the \fB\-all\fR flag is given, the list of methods will include those
-methods defined not just by the class, but also by the class's superclasses
-and mixins.
-.VE 8.6
-.TP
-\fB\-private\fR
-.VS 8.6
-If the \fB\-private\fR flag is given, the list of methods will also include
-the private (i.e. non-exported) methods of the class (and superclasses and
-mixins, if \fB\-all\fR is also given).
-.RE
-.VE 8.6
-.TP
-\fBinfo class methodtype\fI class method\fR
-.VS 8.6
-This subcommand returns a description of the type of implementation used for
-the method named \fImethod\fR of class \fIclass\fR. When the result is
-\fBmethod\fR, further information can be discovered with \fBinfo class
-definition\fR, and when the result is \fBforward\fR, further information can
-be discovered with \fBinfo class forward\fR.
-.VE 8.6
-.TP
-\fBinfo class mixins\fI class\fR
-.VS 8.6
-This subcommand returns a list of all classes that have been mixed into the
-class named \fIclass\fR.
-.VE 8.6
-.TP
-\fBinfo class subclasses\fI class\fR ?\fIpattern\fR?
-.VS 8.6
-This subcommand returns a list of direct subclasses of class \fIclass\fR. If
-the optional \fIpattern\fR argument is present, it constrains the list of
-returned classes to those that match it according to the rules of
-\fBstring match\fR.
-.VE 8.6
-.TP
-\fBinfo class superclasses\fI class\fR
-.VS 8.6
-This subcommand returns a list of direct superclasses of class \fIclass\fR in
-inheritance precedence order.
-.VE 8.6
-.TP
-\fBinfo class variables\fI class\fR
-.VS 8.6
-This subcommand returns a list of all variables that have been declared for
-the class named \fIclass\fR (i.e. that are automatically present in the
-class's methods, constructor and destructor).
-.SS "OBJECT INTROSPECTION"
-.PP
-The following \fIsubcommand\fR values are supported by \fBinfo object\fR:
-.VE 8.6
-.TP
-\fBinfo object call\fI object method\fR
-.VS 8.6
-Returns a description of the method implementations that are used to provide
-\fIobject\fR's implementation of \fImethod\fR. This consists of a list of
-lists of four elements, where each sublist consists of a word that describes
-the general type of method implementation (being one of \fBmethod\fR for an
-ordinary method, \fBfilter\fR for an applied filter, and \fBunknown\fR for a
-method that is invoked as part of unknown method handling), a word giving the
-name of the particular method invoked (which is always the same as
-\fImethod\fR for the \fBmethod\fR type, and
-.QW \fBunknown\fR
-for the \fBunknown\fR type), a word giving what defined the method (the fully
-qualified name of the class, or the literal string \fBobject\fR if the method
-implementation is on an instance), and a word describing the type of method
-implementation (see \fBinfo object methodtype\fR).
-.RS
-.PP
-Note that there is no inspection of whether the method implementations
-actually use \fBnext\fR to transfer control along the call chain.
-.RE
-.VE 8.6
-.TP
-\fBinfo object class\fI object\fR ?\fIclassName\fR?
-.VS 8.6
-If \fIclassName\fR is unspecified, this subcommand returns class of the
-\fIobject\fR object. If \fIclassName\fR is present, this subcommand returns a
-boolean value indicating whether the \fIobject\fR is of that class.
-.VE 8.6
-.TP
-\fBinfo object definition\fI object method\fR
-.VS 8.6
-This subcommand returns a description of the definition of the method named
-\fImethod\fR of object \fIobject\fR. The definition is described as a two
-element list; the first element is the list of arguments to the method in a
-form suitable for passing to another call to \fBproc\fR or a method definition,
-and the second element is the body of the method.
-.VE 8.6
-.TP
-\fBinfo object filters\fI object\fR
-.VS 8.6
-This subcommand returns the list of filter methods set on the object.
-.VE 8.6
-.TP
-\fBinfo object forward\fI object method\fR
-.VS 8.6
-This subcommand returns the argument list for the method forwarding called
-\fImethod\fR that is set on the object called \fIobject\fR.
-.VE 8.6
-.TP
-\fBinfo object isa\fI category object\fR ?\fIarg\fR?
-.VS 8.6
-This subcommand tests whether an object belongs to a particular category,
-returning a boolean value that indicates whether the \fIobject\fR argument
-meets the criteria for the category. The supported categories are:
-.VE 8.6
-.RS
-.TP
-\fBinfo object isa class\fI object\fR
-.VS 8.6
-This returns whether \fIobject\fR is a class (i.e. an instance of
-\fBoo::class\fR or one of its subclasses).
-.VE 8.6
-.TP
-\fBinfo object isa metaclass\fI object\fR
-.VS 8.6
-This returns whether \fIobject\fR is a class that can manufacture classes
-(i.e. is \fBoo::class\fR or a subclass of it).
-.VE 8.6
-.TP
-\fBinfo object isa mixin\fI object class\fR
-.VS 8.6
-This returns whether \fIclass\fR is directly mixed into \fIobject\fR.
-.VE 8.6
-.TP
-\fBinfo object isa object\fI object\fR
-.VS 8.6
-This returns whether \fIobject\fR really is an object.
-.VE 8.6
-.TP
-\fBinfo object isa typeof\fI object class\fR
-.VS 8.6
-This returns whether \fIclass\fR is the type of \fIobject\fR (i.e. whether
-\fIobject\fR is an instance of \fIclass\fR or one of its subclasses, whether
-direct or indirect).
-.RE
-.VE 8.6
-.TP
-\fBinfo object methods\fI object\fR ?\fIoption...\fR?
-.VS 8.6
-This subcommand returns a list of all public (i.e. exported) methods of the
-object called \fIobject\fR. Any of the following \fIoption\fRs may be
-specified, controlling exactly which method names are returned:
-.RS
-.VE 8.6
-.TP
-\fB\-all\fR
-.VS 8.6
-If the \fB\-all\fR flag is given, the list of methods will include those
-methods defined not just by the object, but also by the object's class and
-mixins, plus the superclasses of those classes.
-.VE 8.6
-.TP
-\fB\-private\fR
-.VS 8.6
-If the \fB\-private\fR flag is given, the list of methods will also include
-the private (i.e. non-exported) methods of the object (and classes, if
-\fB\-all\fR is also given).
-.RE
-.VE 8.6
-.TP
-\fBinfo object methodtype\fI object method\fR
-.VS 8.6
-This subcommand returns a description of the type of implementation used for
-the method named \fImethod\fR of object \fIobject\fR. When the result is
-\fBmethod\fR, further information can be discovered with \fBinfo object
-definition\fR, and when the result is \fBforward\fR, further information can
-be discovered with \fBinfo object forward\fR.
-.VE 8.6
-.TP
-\fBinfo object mixins\fI object\fR
-.VS 8.6
-This subcommand returns a list of all classes that have been mixed into the
-object named \fIobject\fR.
-.VE 8.6
-.TP
-\fBinfo object namespace\fI object\fR
-.VS 8.6
-This subcommand returns the name of the internal namespace of the object named
-\fIobject\fR.
-.VE 8.6
-.TP
-\fBinfo object variables\fI object\fR
-.VS 8.6
-This subcommand returns a list of all variables that have been declared for
-the object named \fIobject\fR (i.e. that are automatically present in the
-object's methods).
-.VE 8.6
-.TP
-\fBinfo object vars\fI object\fR ?\fIpattern\fR?
-.VS 8.6
-This subcommand returns a list of all variables in the private namespace of
-the object named \fIobject\fR. If the optional \fIpattern\fR argument is
-given, it is a filter (in the syntax of a \fBstring match\fR glob pattern)
-that constrains the list of variables returned. Note that this is different
-from the list returned by \fBinfo object variables\fR; that can include
-variables that are currently unset, whereas this can include variables that
-are not automatically included by any of \fIobject\fR's methods (or those of
-its class, superclasses or mixins).
-.VE 8.6
-.SH EXAMPLES
-.PP
-This command prints out a procedure suitable for saving in a Tcl
-script:
-.PP
-.CS
-proc printProc {procName} {
- set result [list proc $procName]
- set formals {}
- foreach var [\fBinfo args\fR $procName] {
- if {[\fBinfo default\fR $procName $var def]} {
- lappend formals [list $var $def]
- } else {
- # Still need the list-quoting because variable
- # names may properly contain spaces.
- lappend formals [list $var]
- }
- }
- puts [lappend result $formals [\fBinfo body\fR $procName]]
-}
-.CE
-.SS "EXAMPLES WITH OBJECTS"
-.VS 8.6
-.PP
-Every object necessarily knows what its class is; this information is
-trivially extractable through introspection:
-.PP
-.CS
-oo::class create c
-c create o
-puts [\fBinfo object class\fR o]
- \fI\(-> prints "::c"\fR
-puts [\fBinfo object class\fR c]
- \fI\(-> prints "::oo::class"\fR
-.CE
-.PP
-The introspection capabilities can be used to discover what class implements a
-method and get how it is defined. This procedure illustrates how:
-.PP
-.CS
-proc getDef {obj method} {
- foreach inf [\fBinfo object call\fR $obj $method] {
- lassign $inf calltype name locus methodtype
- # Assume no forwards or filters, and hence no $calltype
- # or $methodtype checks...
- if {$locus eq "object"} {
- return [\fBinfo object definition\fR $obj $name]
- } else {
- return [\fBinfo class definition\fR $locus $name]
- }
- }
- error "no definition for $method"
-}
-.CE
-.PP
-This is an alternate way of looking up the definition; it is implemented by
-manually scanning the list of methods up the inheritance tree. This code
-assumes that only single inheritance is in use, and that there is no complex
-use of mixed-in classes (in such cases, using \fBinfo object call\fR as above
-is the simplest way of doing this by far):
-.PP
-.CS
-proc getDef {obj method} {
- if {$method in [\fBinfo object methods\fR $obj]} {
- # Assume no forwards
- return [\fBinfo object definition\fR $obj $method]
- }
- set cls [\fBinfo object class\fR $obj]
- while {$method ni [\fBinfo class methods\fR $cls]} {
- # Assume the simple case
- set cls [lindex [\fBinfo class superclass\fR $cls] 0]
- if {$cls eq ""} {
- error "no definition for $method"
- }
- }
- # Assume no forwards
- return [\fBinfo class definition\fR $cls $method]
-}
-.CE
-.VE 8.6
-.SH "SEE ALSO"
-.VS 8.6
-global(n), oo::class(n), oo::define(n), oo::object(n), proc(n), self(n),
-.VE 8.6
-tcl_library(n), tcl_patchLevel(n), tcl_version(n)
-.SH KEYWORDS
-command, information, interpreter, introspection, level, namespace,
-.VS 8.6
-object,
-.VE 8.6
-procedure, variable
-'\" Local Variables:
-'\" mode: nroff
-'\" fill-column: 78
-'\" End: