[comment {-*- tcl -*- 
  manpage fragment for "info *" subset shared by nx::Object and nx::Class
}]	 

[keywords "method filter"]
[keywords "submethod"]
[keywords "parameter specification"]
[keywords "type specification"]
[keywords "method handle"]
[keywords "method path"]

[call  [arg [vset CMD]] [method {info info}] [opt [option "-asList"]]] 
Returns the available [term "submethod"]s of the [method info] [term "method ensemble"] for
[arg [vset CMD]], either as a pretty-printed string or as a
Tcl list (if the [term "switch"] [option -asList] is set) for further
processing.

[call [arg [vset CMD]] [method "info [vset MODIFIER] filters"] [opt [option -guards]] [opt [arg pattern]]]

If [arg pattern] is omitted, returns all filter names which are
defined by [arg [vset CMD]]. By turning on the [term switch] [option -guards], the
corresponding guard expressions, if any, are also
reported along with each filter as a three-element list: [arg filterName] -guard
[arg guardExpr]. By specifying [arg pattern], the
returned filters can be limited to those whose names match [arg patterns] (see
[cmd "string match"]).

[call [arg [vset CMD]] [method "info [vset MODIFIER] method"] [arg option] [arg methodName]]

This introspection [term "submethod"] provides access to the details
of [arg methodName] provided by [arg [vset CMD]]. If [arg methodName]
is not the name of an existing method, an empty string is returned. To
disambiguate between a non-existing method and an empty string as
valid return value (e.g., for [method "info [vset MODIFIER] method args|parameters|args|..."]),
use [method "info [vset MODIFIER] method exists"].

[para]

Permitted values for [arg option] are:

[list_begin itemized]

[item] [const args] returns a list containing the parameter names of
[arg methodName], in order of the method-parameter specification.

[item] [const body] returns the body script of [arg methodName].

[item] [const callprotection] returns the call-protection level set for [arg methodName]; possible values: [const public], [const protected], [const private].

[item] [const debug] returns 1 if [arg methodName] is in debug mode, 0 otherwise.

[item] [const definition] returns a canonical command list which allows for (re-)define [arg methodName].

[item] [const definitionhandle] returns the [term "method handle"] for a [term "submethod"] in a [term "method ensemble"] from the perspective of [arg [vset CMD]] as method provider. [arg methodName] must contain a complete [term "method path"].

[item] [const deprecated] returns 1 if [arg methodName] is deprecated, 0 otherwise.

[item] [const exists] returns 1 if there is a [arg methodName] provided by [arg [vset CMD]], returns 0 otherwise.

[item] [const handle] returns the [term "method handle"] for [arg methodName].

[item] [const origin] returns the aliased command if [arg methodName] is an [term "alias method"], or an empty string otherwise.

[item] [const parameters] returns the [term "parameter specification"] of [arg methodName] as
a list of parameter names and type specifications.

[item] [const registrationhandle] returns the [term "method handle"] for a [term "submethod"] in a [term "method ensemble"] from the perspective of the method caller. [arg methodName] must contain a complete [term "method path"].

[item] [const returns] gives the [term "type specification"] defined
for the return value of [arg methodName].

[item] [const submethods] returns the names of all [term "submethod"]s of [arg methodName], if [arg methodName] is a [term "method ensemble"]. Otherwise, an empty string is returned.

[item] [const syntax] returns the method parameters of [arg methodName] as a
concrete-syntax description to be used in human-understandable
messages (e.g., errors or warnings, documentation strings).

[item] [const type] returns whether [arg methodName] is a [emph scripted] method, an [emph alias] method, a [emph forwarder] method, or a [emph setter] method.

[comment {
  [item] [const object] 
  [item] [const nsfproc]
  [item] [const builtin] denotes methods provided a [term "baseclass"];

}]


[list_end]

[call [arg [vset CMD]] [method "info [vset MODIFIER] methods"] [opt "[option -callprotection] [arg level]"] [opt "[option -type] [arg methodType]"] [opt [option -path]] [opt [arg namePattern]]]

Returns the names of all methods defined by [arg [vset CMD]]. Methods
covered include those defined using [method "[vset MODIFIER] alias"]
and [method "[vset MODIFIER] forward"]. The returned methods can be limited
to those whose names match [arg namePattern] (see [cmd "string match"]).

[para]

By setting [option -callprotection], only methods of a certain [term "call protection"] [arg level] ([const "public"], [const "protected"], or [const "private"]) will be returned. Methods of a specific type can be requested using [option "-type"]. The recognized values for [arg methodType] are:
[list_begin itemized]
[item] [const scripted] denotes methods defined using [const [vset SCOPE]] [method method];
[item] [const alias] denotes [term "alias method"]s defined using [const [vset SCOPE]] [method alias];
[item] [const forwarder] denotes [term "forwarder method"]s defined using [const [vset SCOPE]] [method forward];
[item] [const setter] denotes methods defined using [cmd ::nsf::setter];
[item] [const all] returns methods of any type, without restrictions (also the default value);
[comment {
  [item] [const object] 
  [item] [const nsfproc]
  [item] [const builtin] denotes methods provided a [term "baseclass"];

}]
[list_end]

[call [arg [vset CMD]] [method "info [vset MODIFIER] mixins"] [opt [option -guards]] [opt [arg pattern]]]

If [arg pattern] is omitted, returns the object names of the [term "mixin class"]es which
extend [arg [vset CMD]] directly. By turning on the [term switch] [option -guards],
the corresponding guard expressions, if any, are also
reported along with each mixin as a three-element list: [arg className] 
-guard [arg guardExpr]. The returned [term "mixin class"]es can be limited to those whose names
match [arg patterns] (see [cmd "string match"]).


[call [arg [vset CMD]] [method "info [vset MODIFIER] slots"] [opt "[option -type] [arg className]"] [opt [arg pattern]]]

If [arg pattern] is not specified, returns the object names of all [term "slot object"]s defined by [arg [vset CMD]]. The returned [term "slot object"]s can be limited according to any or a
combination of the following criteria: First, [term "slot object"]s
can be filtered based on their command names matching [arg pattern] (see [cmd "string
match"]). Second, [option "-type"] allows one to select
[term "slot object"]s which are instantiated from a subclass [arg className] of [cmd nx::Slot] (default: [cmd nx::Slot]).

[call [arg [vset CMD]] [method "info [vset MODIFIER] variables"] [opt [arg pattern]]]

If [arg pattern] is omitted, returns the object names of all [term "slot object"]s provided
by [arg [vset CMD]] which are responsible for managing properties and variables of [arg [vset CMD]]. Otherwise,
only [term "slot object"]s whose names match [arg pattern] are
returned.

[para]

This is equivalent to calling: [arg [vset CMD]] [method "info [vset MODIFIER] slots"] [option -type] [cmd ::nx::VariableSlot] [arg pattern].

[para]

To extract details of each [term "slot object"], use the [method info]
submethods available for each [term "slot object"].

