Auto-generates S4 generics from an R6 Class.

R62S4(
  R6Class,
  dispatchClasses = list(R6Class),
  assignEnvir = parent.env(environment()),
  mask = FALSE,
  scope = "public",
  arg1 = "object",
  exclude = NULL
)

Arguments

R6Class

R6ClassGenerator to generate public methods from

dispatchClasses

list of classes to assign dispatch methods on

assignEnvir

environment in which to assign the generics/methods, default is parent of current environment.

mask

logical, determines if non-generic functions should be masked if found, see details.

scope

determines the scope of methods that should be copied, either "public", "active" or both

arg1

if mask == TRUE or no generic is found, then arg1 determines what name to give to the first argument in the generic.

exclude

an optional character vector naming the public methods or active bindings to exclude from the generator

Value

Assigns generics/methods/functions to the chosen environment.

Assigns methods and generics to the chosen environment.

Details

If scope == "public" then searches in a given R6::R6Class for all public methods that are not initialize or clone. If scope == "active" then searches for all active bindings. Currently there is only support for calling active bindings but not setting them. If scope == c("public", active") then both are included. Any methods/bindings passed to exclude will be ignored in the search.

If mask == TRUE then the generator ignores if a generic or method of the same name exists and will create a new S4 generic/method. If mask == FALSE then the generator will create a new generic only if an existing generic does not already exist. Methods and generics are created using standard convention.

The optional dispatchClasses argument takes a list of R6::R6Classes and allows methods to be created for multiple classes at one time.

S4 generics are detected with methods::.S4methods().

See also

methods::setMethod methods::setGeneric

Other R62s: R62Fun(), R62S3()

Examples

printMachine <- R6::R6Class("printMachine", public = list(initialize = function() {}, printer = function(str) print(str)), active = list(Status = function() "Printing")) pm <- printMachine$new() # scope = public R62S4(printMachine, assignEnvir = topenv()) printer(pm, "Test String B")
#> [1] "Test String B"
# scope = active R62S4(printMachine, assignEnvir = topenv(), scope = 'active') # note support for accessing only, cannot assign # values to an active binding Status(pm)
#> [1] "Printing"