Class inheritance affects which methods are called in IDL. An object of
a class which inherits methods from one or more superclasses can
override that method by defining its own method of the same name, extend
the method by calling the method(s) of its superclass(es) in its
version, or inherit the method directly by making no modifications.
IDLWAVE examines class definitions during completion and routine
information display, and records all inheritance information it finds.
This information is displayed if appropriate with the calling sequence
for methods (see Routine Info), as long as variable
idlwave-support-inheritance
is non-nil
.
In many class methods, keyword inheritance (_EXTRA
and
_REF_EXTRA
) is used hand-in-hand with class inheritance and
method overriding. E.g., in a SetProperty
method, this technique
allows a single call obj->SetProperty
to set properties up the
entire class inheritance chain. This is often referred to as
chaining, and is characterized by chained method calls like
self->MySuperClass::SetProperty,_EXTRA=e
.
IDLWAVE can accommodate this special synergy between class and keyword
inheritance: if _EXTRA
or _REF_EXTRA
is detected among a
method’s keyword parameters, all keywords of superclass versions of
the method being considered can be included in completion. There is
of course no guarantee that this type of keyword chaining actually
occurs, but for some methods it’s a very convenient assumption. The
variable idlwave-keyword-class-inheritance
can be used to
configure which methods have keyword inheritance treated in this
simple, class-driven way. By default, only Init
and
(Get|Set)Property
are. The completion buffer will label
keywords based on their originating class.
t
) ¶Non-nil
means consider inheritance during completion, online help etc.
A list of regular expressions to match methods for which simple class-driven keyword inheritance will be used for Completion.