nx::current

nx::current(3) 2.2.0 current "NX API"

Name

nx::current - Return information about the method callstack

Description

current ?option?

This introspection command provides information about various details, to be identified using option, on the callstack. The command is invoked from a method body. If option is not provided, nx::current will default to option object (see below). nx::current operates on the Tcl callstack and is aware of NX-specific callstack and stackframe details. Except for the options callinglevel and level, calling nx::current outside an NX object or method will result in an error. option can be any of the following:

  • activelevel returns the actual callstack level which calls into the currently executing method directly. This activelevel might correspond the callinglevel, but this is not necessarily the case. The activelevel also includes intermediate calls, such as nx::next invocations. The level is reported as an absolute level number (# followed by a digit) to be directly used as the first argument to uplevel or upvar.

  • args returns the list of argument values passed into the currently executing method implementation.

  • calledclass returns the name of the class that provides the method implementation to which the intercepted method call is to be redirected (only available from within filter methods).

  • calledmethod returns the original method name requested by intercepted method call (only available from within filter methods).

  • callingclass returns the name of the class which provides the method implementation calling into the currently executing method. See also callingobject.

  • callinglevel resolves the callstack level of the originating invocation of the currently executing method implementation. Callstack levels introduced by method interception (e.g., filters) and by method combination (nx::next) are ignored. The level is reported as an absolute level number (# followed by a digit) to be directly used as the first argument to uplevel or upvar. See also activelevel. If called outside NX, 1 is returned (which is the default for upvar and uplevel).

  • callingobject returns the name of the object which is calling into the currently executing method. See also callingclass.

  • class returns the name of the class providing the currently executing method implementation. The returned method-providing class may be different to the class of the current object. If called from within a method implementation provided by the current object itself, an empty string is returned.

  • filterreg returns the object (class) on which the currently executing method was registered as a filter method (only available from within filter methods).

  • isnextcall will return 1, if the currently executing method implementation was invoked via nx::next; 0 otherwise.

  • level will return a number indicating the stack level of the currently executed method or script, or an empty string when executed outside an NX context (e.g., in a Tcl proc or a namespace script). The resulting value can be directly passed as level to info level.

  • method returns the name of the currently executing method. If an ensemble-method call, the name of the bottom-most ("leaf") method is returned.

  • methodpath returns the combined name of the currently executing method (including all ensemble levels) in an ensemble-method call. Otherwise, for a regular method call, the result corresponds to the result of option method.

  • nextmethod returns the name of the next most specific method implementation to be called when invoking nx::next.

  • object gives the name of the object on which the currently executing method implementation is evaluated.