diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2018-01-02 20:34:49 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2018-01-02 20:34:49 (GMT) |
commit | 89c1ac99d375fbd73892aa659f06ef5e2c5ea56e (patch) | |
tree | e76ce80d68d11f1ea137bc33a42f71a1d1f32028 /tcl8.6/doc/info.n | |
parent | 01e4cd2ef2ff59418766b2259fbc99771646aba6 (diff) | |
download | blt-89c1ac99d375fbd73892aa659f06ef5e2c5ea56e.zip blt-89c1ac99d375fbd73892aa659f06ef5e2c5ea56e.tar.gz blt-89c1ac99d375fbd73892aa659f06ef5e2c5ea56e.tar.bz2 |
upgrade to tcl/tk 8.6.8
Diffstat (limited to 'tcl8.6/doc/info.n')
-rw-r--r-- | tcl8.6/doc/info.n | 777 |
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: |