MethodsList
objects, the
objects formerly used in R to store methods for dispatch. Use of
these objects is no longer required, and while not yet formally
deprecated, will rarely be a good idea. Where methods dispatch is
to be studied, see selectMethod
. For computations
that iterate over methods or over method signatures, see
findMethods
, which returns a linearized methods list
to hold method definitions, usually more convenient for iteration
than the recursive MethodsList
objects.
MethodsList(.ArgName, ...)
makeMethodsList(object, level=1)
SignatureMethod(names, signature, definition)
insertMethod(mlist, signature, args, def, cacheOnly)
inheritedSubMethodLists(object, thisClass, mlist, ev)
showMlist(mlist, includeDefs = TRUE, inherited = TRUE, classes, useArgNames, printTo = stdout() )
"print"(x, ...)
listFromMlist(mlist, prefix = list(), sigs. = TRUE, methods. = TRUE)
linearizeMlist(mlist, inherited = TRUE)
finalDefaultMethod(method)
mergeMethods(m1, m2, genericLabel)
loadMethod(method, fname, envir)
MethodsListSelect(f, env, mlist, fEnv, finalDefault, evalArgs, useInherited, fdef, resetAllowed)
MethodsList
:""
) corresponds to the default
method. The elements can be either a function, or another MethodsList. In
the second case, this list implies dispatching on the second
argument to the function using that list, given a selection of
this element on the first argument. Thus, method dispatching on
an arbitrary number of arguments is defined. MethodsList objects are used primarily to dispatch OOP-style
methods and, in R, to emulate S4-style methods.
SignatureMethod
:signature[[1]]
is the match for the first argument,
signature[[2]]
for the second argument, and so on. The
string "missing"
means a match for a missing argument, and
"ANY"
means use this as the default setting at this level. The first argument is the argument names to be used for dispatch
corresponding to the signatures.
insertMethod
:def
into the MethodsList object,
mlist
, corresponding to the signature. By default, insert
it in the slot "methods"
, but cacheOnly=TRUE
inserts
it into the "allMethods"
slot (used for dispatch but not saved).
inheritedSubMethodLists
:NULL
) to the elements of a methods list.
Used in finding inherited methods, and not meant to be called
directly.
showMlist
:includeDefs
the
signatures and the corresponding definitions will be printed;
otherwise, only the signatures.
listFromMlist
:list(sigs,methods)
of function definitions, i.e. of
matching signatures and methods.
prefix
is the partial signature (a named list of classes)
to be prepended to the signatures in this object. If sigs.
or methods.
are FALSE
, the resulting part of the
return value will be empty. A utility function used to iterate over all the individual methods
in the object, it calls itself recursively.
linearizeMlist
:listFromMlist
instead.
finalDefaultMethod
:"MethodsList"
objects, this function only checks that the
value given it is a method definition, primitive or NULL.
mergeMethods
:getAllMethods
. For a primitive function,
genericLabel
is supplied as the name of the generic.
loadMethod
:method
is
dispatched in the frame envir
. The function exists so that
methods can be defined for special classes of objects. Usually
the point is to assign or modify information in the frame
environment to be used evaluation. For example, the standard
class MethodDefinition
has a method that stores the target
and defined signatures in the environment. Class
MethodWithNext
has a method taking account of the
mechanism for storing the method to be used in a call to
callNextMethod
. Any methods defined for loadMethod
must return the function
definition to be used for this call; typically, this is just the
method
argument.
MethodsListSelect
MethodsListSelect
performs a full search
(including all inheritance and group generic information: see the
Methods documentation page for details on how this works).
The call returns a possibly revised methods list object,
incorporating any method found as part of the allMethods
slot. This search was used by the evaluator when methods lists
were the metadata for methods dispatch. This function is now deprecated. Chambers, John M. (1998) Programming with Data Springer (For the original S4 version.)