Paul Roebuck wrote: > Is it possible for S4 to (continue) dispatch to a class > created during dispatching? The code below doesn't work; > is this not possible or have I ommitted something?
"doesn't work"? This is not helpful. Please show what you got and what you expected. The result below is what I would expect (& get) from your code. R> onthefly("testing") generic onthefly onthefly (character) generic onthefly onthefly (mydata) List of 1 $ name: chr "mydata" - attr(*, "class")= chr "mydata" Since you used an undefined class "mydata" you can't expect very much else to work with these objects. You did not in fact "create" the class, you just assigned a class attribute to an object corresponding to an undefined class. There is a warning message to that effect from the second setMethod() call. > > Concept was to create a SEXP with R_AllocatePtr, give it > a class attribute, and continue dispatch. Example code > below omits multiple parameters that can be different types. > Essentially, any parameter would be converted to an > internal type "class" and the final dispatch would be > passing EXTPTRSXP objects. > > > library(methods) > > setGeneric("onthefly", > function(mydata) { > cat("generic", match.call()[[1]], "\n") > standardGeneric("onthefly") > }) > > setMethod("onthefly", > signature(mydata = "character"), > function(mydata) { > cat(match.call()[[1]], > "(character)\n") > > # Simulating EXTPTRSXP > mydata <- list(name = "mydata") > class(mydata) <- "mydata" > > callGeneric(mydata) > }) > > setMethod("onthefly", > signature(mydata = "mydata"), > function(mydata) { > cat(match.call()[[1]], > "(mydata)\n") > > str(mydata) > }) > > > > >>version > > _ > platform powerpc-apple-darwin7.9.0 > arch powerpc > os darwin7.9.0 > system powerpc, darwin7.9.0 > status > major 2 > minor 1.1 > year 2005 > month 06 > day 20 > language R > > ---------------------------------------------------------- > SIGSIG -- signature too long (core dumped) > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel